package com.ssy.lingxi.member.merchant.service.feign;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.MemberSalesCountFeignVO;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.MemberSalesFindMemberVO;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.request.MemberSalesFindUserIdVO;
import com.ssy.lingxi.member.merchant.api.model.vo.inner.response.*;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.ChannelListVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.MemberSalesChannelFindUserIdQueryVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * @author 郑小翠
 * @version 2.02.18
 * @date 2022-03-29
 */
public interface IMemberAbilitySalesFeignService {

    /**
     * 远程调用 - 分页查询已经绑定渠道的业务员列表
     *
     * @param pageVO 接口参数
     * @return 返回符合条件的业务员列表和下级会员
     */
    Wrapper<PageData<MemberFeignSalesCountVO>> getMemberSalesList(MemberSalesCountFeignVO pageVO);

    /**
     * 获取角色类型为消费者的角色Id
     *
     * @return 返回角色类型为消费者的角色Id
     */
    Wrapper<List<Long>> getRoleIds();

    /**
     * 远程调用 - 分页查询该业务员下面的渠道会员
     *
     * @param pageVO 下级会员搜索条件
     * @return 下级会员信息
     */
    Wrapper<PageData<MemberSalesFeignPageQueryVO>> findByUserId(MemberSalesFindUserIdVO pageVO);

    /**
     * 远程调用 - 查询已经绑定渠道的业务员列表
     *
     * @param pageVO 接口参数
     * @return 返回下级会员信息
     */
    Wrapper<List<MemberSalesFindMemberQueryVO>> findMemberSales(MemberSalesFindMemberVO pageVO);


    /**
     * 查看业务员详情
     *
     * @param headers 头部信息
     * @param userId  业务员逐渐Id
     * @return 操作接口
     */
    Wrapper<MemberSalesChannelFindUserIdQueryVO> getChannelInformation(HttpHeaders headers, Long userId);


    /**
     * 订单能力-业绩统计-订单明细-业务员列表
     *
     * @param headers 头部信息
     * @return 返回业务员列表
     */
    Wrapper<List<ChannelListVO>> getChannelList(HttpHeaders headers);

    /**
     * 根据数据权限展示业务员
     *
     * @param pageVO 查询条件
     * @return 返回符合条件的业务员
     */
    Wrapper<List<MemberUserVO>> getUserIds(MemberSalesCountFeignVO pageVO);
}
